Computer hardware and software systems are often developed independently with a common timeline for completion, integration, and new product release. Thus, as an operating system is being designed and written and versions become available for testing and verification with the corresponding hardware, the hardware is not yet available because it is also still in development. While computer hardware models for testing and new product release may be created at various stages in the development of the operating system, these models are expensive and take time to create.
To aid in the testing of operating systems during development, software programs may be created to emulate hardware configurations, thereby making a software program under test believe that it is running on hardware. Hardware simulation tools have been used for this purpose for some time, but rapid growth in computer system size and capability has rendered existing hardware simulation tools ineffective or obsolete and has created a need for simulation tools that are capable of emulating today's advanced systems.
In particular, current simulation tools are not capable of simulating very large main memory, where very large main memory typically exceeds 237 bits. Simulators were designed to simulate smaller memory spaces in a one-to-one simulated memory to file address range, but a large memory space cannot be accessed by an application or tool running on a computer system because of memory and file limitations that the application must operate in. The simulator is further constrained by size limitations and available resources when it is required to save and restore the simulated environment for subsequent review, debugging, and verification.
Thus, there is a need for a main memory simulation tool for simulating very large main memory that is capable of operating with limited resources while retaining the ability to save and restore a simulated environment.